package com.ydc.ln.tutorial;

import org.junit.Test;

/**
 * 打印菱形
 * 
 * @author yangdc
 * 
 */
public class PrintLingXing {

	@Test
	public void testDemo() {
		printDemo();
	}

	@Test
	public void testMy() {
		this.printLingXing(9, 5);
	}

	@Test
	public void testMy02() {
		this.printFixedLingXing(5);
	}

	public void printDemo() {
		int i, j, k;
		// i 的值，-3，-2，-1，0，1，2，3
		for (i = -3, j = 1; i <= 3; j++) {
			// 对i取绝对值，并传至给k
			if (i < 0)
				k = i * (-1);
			else
				k = i;
			// 如果满足条件，输出*，且跳出本次循环。
			if (j <= k || (j > 7 - k && j != 8)) {
				System.out.print("*");
				continue;
			}
			// 如果满足条件输出a
			if (j > k && j <= 7 - k) {
				System.out.print("a");
			}
			// 如果j=8则i自加1，并将0重新赋值为0！
			// （只有j在[1,7]范围内才输出）
			if (j == 8) {
				i++;
				j = 0;
				System.out.println();
			}
		}
	}

	/**
	 * 高与宽必须为奇数
	 * 
	 * @param height
	 * @param width
	 */
	public void printLingXing(int height, int width) {
		if (height < 0 || height % 2 == 0) {
			return;
		}
		if (width < 0 || width % 2 == 0) {
			return;
		}

		for (int i = 0; i < height; i++) {
			for (int j = 0; j < width; j++) {

			}
			System.out.println("*");
		}
	}

	/**
	 * length必须为奇数
	 * 
	 * @param length
	 */
	public void printFixedLingXing(int length) {
		if (length < 0 || length % 2 == 0) {
			return;
		}
		int middle = length / 2;
		for (int i = 0; i < length; i++) {
			int tmp = 0;
			if(i<=middle) {
				tmp = i % (middle + 1);
			} else {
				tmp = middle - i/2;
			}
			for (int j = 0; j < length; j++) {
				if (j >= middle - tmp && j <= middle + tmp) {
					System.out.print("*");
				} else {
					System.out.print(" ");
				}

			}
			System.out.println();
		}
	}
}
